using System;
using System.Collections;
using System.Collections.Generic;
using Newtonsoft.Json;

using MarketPlace.Data.Bases;

namespace MarketPlace.Data.DomainModels
{
    [JsonObject(MemberSerialization.OptIn)]
    public partial class Log : BusinessBase<long>
    {
        #region Declarations

		private System.DateTime _date = new DateTime();
		private string _thread = String.Empty;
		private string _level = String.Empty;
		private string _logger = String.Empty;
		private string _message = String.Empty;
		private string _exception = null;
		
		
		
		#endregion

        #region Constructors

        public Log() { }

        #endregion

        #region Methods

        public override int GetHashCode()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            
            sb.Append(this.GetType().FullName);
			sb.Append(_date);
			sb.Append(_thread);
			sb.Append(_level);
			sb.Append(_logger);
			sb.Append(_message);
			sb.Append(_exception);

            return sb.ToString().GetHashCode();
        }

        #endregion

        #region Properties

        [JsonProperty]
		public virtual System.DateTime Date
        {
            get { return _date; }
			set
			{
				OnDateChanging();
				_date = value;
				OnDateChanged();
			}
        }
		partial void OnDateChanging();
		partial void OnDateChanged();
		
        [JsonProperty]
		public virtual string Thread
        {
            get { return _thread; }
			set
			{
				OnThreadChanging();
				_thread = value;
				OnThreadChanged();
			}
        }
		partial void OnThreadChanging();
		partial void OnThreadChanged();
		
        [JsonProperty]
		public virtual string Level
        {
            get { return _level; }
			set
			{
				OnLevelChanging();
				_level = value;
				OnLevelChanged();
			}
        }
		partial void OnLevelChanging();
		partial void OnLevelChanged();
		
        [JsonProperty]
		public virtual string Logger
        {
            get { return _logger; }
			set
			{
				OnLoggerChanging();
				_logger = value;
				OnLoggerChanged();
			}
        }
		partial void OnLoggerChanging();
		partial void OnLoggerChanged();
		
        [JsonProperty]
		public virtual string Message
        {
            get { return _message; }
			set
			{
				OnMessageChanging();
				_message = value;
				OnMessageChanged();
			}
        }
		partial void OnMessageChanging();
		partial void OnMessageChanged();
		
        [JsonProperty]
		public virtual string Exception
        {
            get { return _exception; }
			set
			{
				OnExceptionChanging();
				_exception = value;
				OnExceptionChanged();
			}
        }
		partial void OnExceptionChanging();
		partial void OnExceptionChanged();
		
        #endregion
    }
}
